package beans;

import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;

import dao.EstadoDao;
import dao.ProyectoDao;
import dao.UsuarioDao;
import excepciones.DaoException;

import modelo.Estado;
import modelo.Proyecto;
import modelo.Usuario;

@ManagedBean 
@RequestScoped
public class SeleccionarEvaluadorBean {

	@ManagedProperty(value="#{listProyectosAsignarEvaluadorBean}")
	private ListProyectosAsignarEvaluadorBean listProyectosAsignarEvaluadorBean;
	
	private Usuario evaluador;
	private Proyecto proyecto;
	private Usuario seleccionEvaluador;
	private List<Usuario> todosEvaluadores;
	private ProyectoDao proyectoDao;

	public ProyectoDao getProyectoDao() {
		return proyectoDao;
	}

	public void setProyectoDao(ProyectoDao proyectoDao) {
		this.proyectoDao = proyectoDao;
	}

	@PostConstruct
	public void init(){
		
		if (listProyectosAsignarEvaluadorBean.getSeleccionEvaluador() != null){
			
			try {
					
					this.proyectoDao = new ProyectoDao();
					this.proyecto = proyectoDao.findById(this.getListProyectosAsignarEvaluadorBean().getSeleccionEvaluador());
					this.setEvaluador(this.proyecto.getPerfil_evaluador());
					this.proyectoDao.closeEntityManager();
								
			} catch (DaoException e) {
				
				e.printStackTrace();
			}	
		}
		
		UsuarioDao usrDao = new UsuarioDao();
		try {
				this.setTodosEvaluadores(usrDao.getTodosLosEvaluadores());
			} catch (DaoException e) {
				e.printStackTrace();
			}
		
	}

	public String agregar(){
		
		Usuario select = this.getSeleccionEvaluador();
				
		this.setEvaluador(select);
		//System.out.println(coordinadores.size());
		return "irAsignarEvaluador";
	}
	
	public String borrar(){
		this.setEvaluador(null);
		return "irAsignarEvaluador";
	}
	
	public String guardar(){
		ProyectoDao proyDao = new ProyectoDao(this.proyecto);
		this.proyecto.setPerfil_evaluador(this.getSeleccionEvaluador());
		EstadoDao estadoDaoEnEval = new EstadoDao();
		try {
			this.proyecto.setMi_estado(estadoDaoEnEval.encontrarPorClave("en_evaluacion"));
			proyDao.update();
		} catch (DaoException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
				
		//System.out.println(coordinadores.size());
		proyDao.closeEntityManager();
				
		this.getListProyectosAsignarEvaluadorBean().setProyectos(null);
		
		EstadoDao estadoDao = new EstadoDao();		
		try {
			Estado estado = estadoDao.encontrarPorClave("cerrado");
			ProyectoDao proyectoDao = new ProyectoDao();
			List<Proyecto> proyectos = proyectoDao.getProyectosPorEstado(estado);
			this.getListProyectosAsignarEvaluadorBean().setProyectos(proyectos);
			//proyectoDao.update();
			proyectoDao.closeEntityManager();
		} 
		catch (DaoException e) {
			e.printStackTrace();
		}
		return "irListAsignarEvaluador";		
	}
	
	public String volver(){
		return "irListAsignarEvaluador";
	}

	public Proyecto getProyecto() {
		return proyecto;
	}

	public void setProyecto(Proyecto proyecto) {
		this.proyecto = proyecto;
	}

	public Usuario getEvaluador() {
		return evaluador;
	}

	public void setEvaluador(Usuario evaluador) {
		this.evaluador = evaluador;
	}

	public Usuario getSeleccionEvaluador() {
		return seleccionEvaluador;
	}

	public void setSeleccionEvaluador(Usuario seleccionEvaluador) {
		this.seleccionEvaluador = seleccionEvaluador;
	}

	public List<Usuario> getTodosEvaluadores() {
		return todosEvaluadores;
	}

	public void setTodosEvaluadores(List<Usuario> todosEvaluadores) {
		this.todosEvaluadores = todosEvaluadores;
	}

	public ListProyectosAsignarEvaluadorBean getListProyectosAsignarEvaluadorBean() {
		return listProyectosAsignarEvaluadorBean;
	}

	public void setListProyectosAsignarEvaluadorBean(
			ListProyectosAsignarEvaluadorBean listProyectosAsignarEvaluadorBean) {
		this.listProyectosAsignarEvaluadorBean = listProyectosAsignarEvaluadorBean;
	}
	
	
}
